package test.specs.historia1;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;

import br.com.ffm.info.praticas.fiptwitter.FIPTwitterFacade;
import br.com.ffm.info.praticas.fiptwitter.core.User;
import br.com.ffm.info.praticas.fiptwitter.exception.FIPTwitterServiceException;

public class UsuarioComDadosInvalidosCenario {
	
	private FIPTwitterFacade facade;
	private User user;
	private FIPTwitterServiceException ex;
	
	@Given("eu tenha acesso ao FipTwitt")
	public void givenEuTenhaAcessoAoFipTwitt(){
		facade = new FIPTwitterFacade();
	}

	@When("busco por um usuário com login $login")
	public void whenBuscoPorUmUsuárioComLogin(String login) {
		login = login.equalsIgnoreCase("vazio") ? "" : login;
		login = login.equalsIgnoreCase("nulo") ? null : login;
		
		try {
			
			user = facade.findByLogin(login);
			
		} catch (FIPTwitterServiceException e) {
			ex = e;
		}
	}
	
	//****
	
	@When("crio um novo usuário com login $login senha $senha e nome $nome")
	public void whenCrioUmNovoUsuario(String login, String senha, String nome) {
		senha = senha.equalsIgnoreCase("vazio") ? "" : senha;
		senha = senha.equalsIgnoreCase("nulo") || senha.equalsIgnoreCase("nula") ? null : senha;
		
		try {
			
			facade.newUser(nome, login, senha);
			
		} catch (FIPTwitterServiceException e) {
			ex = e;
		}
	}
	

	@Then("deve aparecer o erro: $erro")
	public void thenDeveAparecerOErro(String erro) {
		assertNotNull(ex);
		assertEquals(erro, ex.getMessage());
		
		ex = null;
	}

}
